﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Diagnostics;

namespace Arthus.Artikli.Klasifikacija
{
    class KlasicikafijaArtikala
    {
        MySqlConnection konekcija;
        MySqlCommand komanda = new MySqlCommand();
        MySqlDataReader datareader = null;
        MySqlDataAdapter adapter = null;
        DataTable dataTable = null;
        DataSet dataSet = null;

        KlasicikafijaArtikala klasifikacijaArtikalaObj = null;

        public String VratiOznakuKlasifikacijeNaOsnovuID(int idKlasifikacije)
        {
            String rezultat = "";
            if (idKlasifikacije != 0)
            {
                try
                {
                    //rezultat ako je idRegiona razlicit od nule
                    //konekcija sa bazom i punjenje dataset-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT klaartozn FROM klaart WHERE klaartid=" + idKlasifikacije;
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        rezultat = datareader.GetValue(0).ToString();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
            else
            {
                //rezultat ako nije idRegiona razlicit od nule
                rezultat = "";
            }
            return rezultat;
        }

        public int VratiIDKlasifikacijeNaOsnovuOznake(String oznaka)
        {
            int rezultat = 0;
            if (oznaka.Length > 0)
            {
                try
                {
                    //rezultat ako je idRegiona razlicit od nule
                    //konekcija sa bazom i punjenje dataset-a
                    konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                    konekcija.Open();
                    komanda.Connection = konekcija;
                    komanda.CommandText = "SELECT klaartid FROM klaart WHERE klaartozn='" + oznaka + "'";
                    datareader = komanda.ExecuteReader();
                    while (datareader.Read())
                    {
                        rezultat = Convert.ToInt32(datareader.GetValue(0).ToString());
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
                }
                finally
                {
                    datareader.Close();
                    konekcija.Close();
                }
            }
            else
            {
                //rezultat ako nije idRegiona razlicit od nule
                rezultat = 0;
            }
            return rezultat;
        }

        public void PopuniListBox(ListBox lb)
        {
            lb.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT KLAARTID, KLAARTOZN FROM KLAART;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    lb.Items.Add(dataTable.Rows[i][0] + ". " + dataTable.Rows[i][1]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        }

        public void PopuniKontroleNaOsnovuIdKlasifikacije(int idKlasifikacije, TextBox oznaka, TextBox naziv, TextBox naziv2)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT KLAARTOZN, KLAARTNA1, KLAARTNA2 FROM KLAART WHERE KLAARTID=" + idKlasifikacije + ";";
                datareader = komanda.ExecuteReader();
                while (datareader.Read())
                {
                    oznaka.Text = datareader.GetValue(0).ToString();
                    naziv.Text = datareader.GetValue(1).ToString();
                    naziv2.Text = datareader.GetValue(2).ToString();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
        }

        public int VratiPovecanID()
        {
            int rezultat = 0;
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "SELECT MAX(KLAARTID) FROM KLAART;";
                datareader = komanda.ExecuteReader();
                datareader.Read();
                rezultat = Convert.ToInt32(datareader.GetValue(0));
                rezultat++;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                datareader.Close();
                konekcija.Close();
            }
            return rezultat;
        }

        public void DodajKlasifikaciju(TextBox oznaka, TextBox naziv, TextBox naziv2)
        {
            klasifikacijaArtikalaObj = new KlasicikafijaArtikala();
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = string.Format("INSERT INTO `klaart`(`klaartid`, `klaartozn`, `klaartozx`, `klaartna1`, `klaartna2`) VALUES ("
                    + klasifikacijaArtikalaObj.VratiPovecanID() + ",'" + oznaka.Text + "','" + Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper()) + "','"
                    + naziv.Text + "','" + naziv2.Text + "')");
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno dodata nova klasifikacija!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji klasifikacija sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void IzmeniKlasifikaciju(int idKlasifikacije, TextBox oznaka, TextBox naziv, TextBox naziv2)
        {
            try
            {
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = @"UPDATE `klaart` SET `klaartozn`='" + oznaka.Text + "',`klaartozx`='"
                    + Razno.IzbrisiPojedineKaraktereIzStringa(oznaka.Text.Trim().ToUpper()) + "',`klaartna1`='" + naziv.Text + "',`klaartna2`='" + naziv2.Text + "' WHERE klaartid="
                    + idKlasifikacije + "";
                int response = komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno izmenjena klasifikacija!");
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Već postoji klasifikacija sa takvom oznakom!");
            }
            catch (FormatException ex)
            {
                MessageBox.Show("Greška u formatu unosa! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void ObrisiKlasifikaciju(int idKlasifikacije)
        {
            try
            {
                //konekcija sa bazom
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                konekcija.Open();
                komanda.Connection = konekcija;
                komanda.CommandType = CommandType.Text;
                komanda.CommandText = "DELETE FROM `klaart` WHERE klaartid=" + idKlasifikacije + ";";
                komanda.ExecuteNonQuery();
                MessageBox.Show("Uspešno obrisana klasifikacija!");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                konekcija.Close();
            }
        }

        public void PopuniComboBoxOznakom(ComboBox combobox)
        {
            combobox.Items.Clear();
            try
            {
                //konekcija sa bazom i punjenje dataset-a
                konekcija = new MySqlConnection(statickePromenljive.konekcioniString);
                komanda.Connection = konekcija;
                komanda.CommandText = "SELECT KLAARTOZN FROM KLAART;";
                dataTable = new DataTable();
                adapter = new MySqlDataAdapter();
                adapter.SelectCommand = komanda;
                adapter.Fill(dataTable);

                adapter.Dispose();
                konekcija.Close();

                for (int i = 0; i < dataTable.Rows.Count; i++)
                {
                    combobox.Items.Add(dataTable.Rows[i][0]);
                }
                combobox.SelectedIndex = 0;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Neočekivana greška! \n" + ex.ToString(), "Greška!", MessageBoxButtons.OK);
            }
            finally
            {
                dataTable.Dispose();
                adapter.Dispose();
                konekcija.Close();
            }
        } //puni combobox oznakom
    }
}
